// 这里是路由的相关配置
import Vue from 'vue'
import VueRouter from 'vue-router'
// 工具模块
import auth from '@/utils/auth'
// 导入组件(路由懒加载写法)
const Login = () => import('@/views/login')
const Layout = () => import('@/views/layout')
const Welcome = () => import('@/views/welcome')
const Article = () => import('@/views/article')
const Image = () => import('@/views/image')
const Publish = () => import('@/views/publish')
const Comment = () => import('@/views/comment')
const Fans = () => import('@/views/fans')
const Setting = () => import('@/views/setting')
const notFound = () => import('@/views/404')

Vue.use(VueRouter)

// 配置路由规则
const routes = [
  // 登录
  {
    path: '/login',
    component: Login
  },
  {
    // 首页
    path: '/',
    component: Layout,
    redirect: '/welcome', // 重定向:登录后直接从/跳转到/welcome
    // 二级路由不能加'/',自动拼接成/welcome
    children: [{
      // 首页欢迎
      path: '/welcome',
      component: Welcome
    }, {
      // 内容管理
      path: 'article',
      component: Article
    }, {
      // 素材管理
      path: 'image',
      component: Image
    }, {
      // 发布文章
      path: 'publish',
      component: Publish
    }, {
      // 评论管理
      path: 'comment',
      component: Comment
    }, {
      // 粉丝管理
      path: 'fans',
      component: Fans
    }, {
      // 个人设置
      path: 'setting',
      component: Setting
    }]
  },
  // 当用户输入错误的路由地址时，404处理
  {
    path: '*',
    component: notFound
  }
]

// 路由实例
const router = new VueRouter({
  routes
})
// 导航守卫
router.beforeEach((to, from, next) => {
  // 解构得到获取用户信息的函数
  const {
    getUser
  } = auth
  // token不存在或不是登录页面,则拦截在登录页面
  if (to.path !== '/login' && !getUser().token) return next('/login')
  // 放行
  next()
})
// 导出实例
export default router
